﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.IO;
using System.Xml.Serialization;
using Sheeter.Library.Model;
using System.Xml;
using System.ComponentModel;
using Sheeter.Library.Reports;

namespace Sheeter.App
{
    public partial class UscImprimir : UserControl
    {
        public List<FileName> listaArquivos;
        XMLInfo xmlInfo = new XMLInfo();

        public UscImprimir()
        {
            InitializeComponent();
            //
            Inicializa();
            bsFichas.DataSource = listaArquivos;
        }

        public void Inicializa()
        {
            DirectoryInfo dirInfo = new DirectoryInfo(Application.StartupPath + "\\fichas");
            FileInfo[] arquivos = dirInfo.GetFiles();
            listaArquivos = new List<FileName>();
            string sistema = String.Empty;

            foreach (FileInfo f in arquivos)
            {
                XmlDeserializer(f);
                //
                if (xmlInfo.Sistema.Equals("MAC"))
                    sistema = "Mago - A Cruzada dos Feiticeiros";
                //
                FileName a = new FileName { Arquivo = f.Name, Tamanho = (f.Length / 1024) + "KB", DataCriacao = f.CreationTime, Sistema = sistema };
                listaArquivos.Add(a);
            }
        }

        private void XmlDeserializer(FileInfo f)
        {
            XmlSerializer serializer = new XmlSerializer(typeof(XMLInfo));
            FileStream fs = new FileStream(f.FullName, FileMode.Open);
            XmlReader xmlReader = XmlReader.Create(fs);
            xmlInfo = (XMLInfo)serializer.Deserialize(xmlReader);
            fs.Close();
        }

        private void grdFichas_DoubleClick(object sender, EventArgs e)
        {
            var fileName = viewFichas.GetRowCellValue(viewFichas.FocusedRowHandle, "Arquivo").ToString();
            var arquivo = String.Format("{0}\\fichas\\{1}", Application.StartupPath, fileName);
            FileInfo a = new FileInfo(arquivo);
            XmlDeserializer(a);

            if (xmlInfo != null)
            {
                RptMac2 rptMac2 = new RptMac2(xmlInfo);
                rptMac2.ShowPreviewDialog();
            }
            else
                MessageBox.Show("Não foi possível visualizar a impressão!", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }

    public class FileName
    {
        public string Arquivo { get; set; }
        public string Tamanho { get; set; }
        [DisplayName("Data de Criação")]
        public DateTime DataCriacao { get; set; }
        public string Sistema { get; set; }
    }
}
